# 胡子健天下第一
# 毋庸置疑
# 开发时间： 2021/3/4 15:39
#函数
'''
#函数的定义
def printinfo():
    print('人生啊。。。')
    print('我就想读个书咋这么难')
    print('求求了，孩子想有书读')
#函数的调用
printinfo()

#带参数的函数
def add2num(a,b):
    c=a+b
    print(c)

add2num(11,22)

#带返回值的函数

def add3num(a,b,c): #通过return返回值
    return a+b+c
print(add3num(11,22,33))

#返回多个值的函数

def divid(a,b):
    shang=a//b #整除 所以结果是2
    yushu=a%b
    return shang,yushu 
sh,yu=divid(5,2)
print(sh,yu)

'''

#练习
#写一个打印一条横线的函数
def printline():
    print('----------------')
print(printline())  #成功

#写一个函数，可以通过输入的参数，打印出自定义行数的线
'''
def printnumline(n):
    i=0
    while i < n:
        printline()
        i += 1
'''
'''
def printj():
 j = 0
 while j < 5:
    print (j)
    j += 2
    print (j)
    print ('一轮结束')
printj()

def printnumline(n):
    i=2 #这个i不要也可以，range默认是从0开始的，但我i从2开始 输入6任然打印出6行怎么解释？
    #解释：因为在for循环中，实际上是根据range的值对i进行了赋值操作，所以不论在for中如何更改i的值，在下一次循环前，
    # i的值都会重新赋值，所以这个循环一共执行5次。所以如何解决？ 上面有，只能靠常数吗？
    for i in range(n):  #需要range的啊，有时间好好看一看range，择日不如撞日
        printline()
a = input('请输入一个数')
printnumline(int(a))  #input是输入字符串的所以需要强制类型转化
#range函数
'''
'''
函数原型：range（start， end， scan):

参数含义：start:计数从start开始。默认是从0开始。例如range（5）等价于range（0， 5）;

 end:技术到end结束，但不包括end.例如：range（0， 5） 是[0, 1, 2, 3, 4]没有5

scan：每次跳跃的间距，默认为1。例如：range（0， 5） 等价于 range(0, 5, 1)

'''
'''

#求三个数的和,我不行了，数组真难做
def print3num(a,b,c):
    print(a+b+c)
list=range(3)
for i in range(0,3,1):
   print('请输入第',i,'个数')
   list[i]=input()
print3num(int(list[0]),int(list[1]),int(list[2]))
'''
'''
本文实例讲述了Python数组定义方法。分享给大家供大家参考，具体如下：

Python中没有数组的数据结构，但列表很像数组，如：

a=[0,1,2]

这时：a[0]=0, a[1]=1, a[[2]=2,但引出一个问题,即如果数组a想定义为0到999怎么办?这时可能通过a = range(0, 1000)实现。或省略为a = range(1000).如果想定义1000长度的a,初始值全为0,则 a = [0 for x in range(0, 1000)]

下面是二维数组的定义：

直接定义：

a=[[1,1],[1,1]]

这里定义了一个2*2的，且初始为0的二维数组。

间接定义：

a=[[0 for x in range(10)] for y in range(10)]

这里定义了10*10初始为0的二维数组。

还有更简单的字义二维数组的方法：

b = [[0]*10]*10

定义10*10初始为0的二维数组。

与a=[[0 for x in range(10)] for y in range(10)]比较：print a==b的结果为True。

但用b的定义方法代替a后，以前的可以正常运行的程序也出错了，经过仔细分析得出区别：

a[0][0]=1时，只有a[0][0]为1，其他全为0。

b[0][0]=1时，a[0][0]，a[1][0],只到a[9,0]全部为1。

由此得到大数组中的10个小的一维数据全是一个相同的引用，即指向同一地址。

故 b = [[0]*10]*10并不符合我们常规意义上的二维数组。

同时经过试验：c=[0]*10的定义与c=[0 for x in range(10)]有同样的效果，而没有上面相同引用的问题，估计数组c的定义时是值类型相乘，而前面b的用类型的相乘，因为一维数组是一个引用(借用C#中的值类型和引用类型，不知是否合适)。

'''